package Interfaz;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.List;

import Negocio.Cliente;
import Negocio.ClienteDTO;
import Negocio.CuentaCorriente;
import Negocio.Deposito;
import Negocio.ItemCuentaCorriente;
import Negocio.Sucursal;
import Negocio.Vehiculo;
import Negocio.Viaje;
import Persistencia.RepositoryException;
import Servicios.ServiceException;

public interface ControllerI extends Remote {
	
	public boolean existeCliente(String clienteId) throws RemoteException;
	
	public List<Cliente> getAllClientes() throws RemoteException;
	
	public void altaClienteParticular (ClienteDTO clienteDTO) throws RemoteException;
	
	public void altaEmpresaRegular(ClienteDTO clienteDTO, Float limiteDeCredito) throws RemoteException, ServiceException;

	public Cliente buscarCliente(String clienteId) throws RemoteException, Exception;
	
	public List<SucursalDTO> getAllSucursales() throws RemoteException, ServiceException;
	
	public Sucursal getSucursal(String id) throws RemoteException, ServiceException;
	
	public void altaEnvioInterSucursal(EnvioDTO envio) throws Exception;
	
	public EnvioDTO getEnvioInterSucursal(int envioId) throws RemoteException, ServiceException;
	
	public List<EnvioDTO> getEnviosInterSucursal() throws RemoteException, ServiceException;
	
	public void altaVehiculo(VehiculoDTO vehiculoDTO) throws RemoteException, ServiceException;
	
	public void altaSucursal(SucursalDTO sucursalDTO) throws RemoteException, ServiceException;
	
	public void altaRuta(RutaDTO rutaDTO) throws RemoteException, ServiceException;
	
	public CuentaCorriente getCuentaCorriente(int cuentaCorrienteId) throws RemoteException, ServiceException;
	
	public List<ItemCuentaCorriente> getItemsCuentaCorriente(int cuentaCorrienteId) throws RemoteException, ServiceException;
	
	public Vehiculo buscarVehiculo(String dominio) throws RemoteException, ServiceException;
	
	public List<Vehiculo> getAllVehiculos() throws RemoteException, ServiceException;
	
	public void altaItemMantenimientoVehiculo(String dominio, ItemPlanMantenimientoDTO itemDTO) throws RemoteException, ServiceException;
	
	public void altaItemCreditoCC(String cuit, String descripcion, Float importeMovimiento) throws RemoteException, ServiceException;
	
	public List<Viaje> getAllViajes() throws RemoteException, ServiceException;

	public Viaje getViaje(int viajeId) throws RemoteException, ServiceException;
	
	public void recibirViaje(int viajeId) throws RemoteException, ServiceException;
	
	public void entregarEnvio(int envioId) throws RemoteException, ServiceException;
	
	public void moverVehiculoASucursal(String dominio, String nombreSucursal) throws RemoteException, ServiceException;
}
